<?php
declare(strict_types=1);

use ZipStream\Option\Archive;
use ZipStream\ZipStream;

Class module_zip
{
    //打包并下载
    public function index()
    {
        // 创建一个新的ZipStream实例
        $zip = new ZipStream('example.zip');
        // 添加一个名为"hello.txt"的文件到压缩包中
        try {
            $zip->addFile('hello.txt','Hello World!');
            $zip->addFileFromPath('index.php', 'index.php');
            // 完成并发送流
            $zip->finish();
//            echo '<pre>';print_r($zip);die;
//            file_put_contents('example.zip', $zip->getZipContent());
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }
    //打包并将压缩包写到磁盘上
    public function compress($compress_files = [],$zipName = ''){
        $zipName = $zipName == '' ? date('YmdHis') : $zipName;
        $zipName .= '.zip';
        $file_name = DIR_ZIP . date("Y") . "/" . date('Y-m-d') . "/" . $zipName;
        module_mkdir::mkdir($file_name);
        file_put_contents($file_name, '');
        // 创建一个zip文件
        $zipOption = new Archive();
        $zipOption->setOutputStream(fopen($file_name, 'w+'));
        $zip = new ZipStream(null, $zipOption);
        // 文件
//        $zip->addFile('hello.txt','Hello World!');
        // 路径+文件
        try {
            foreach($compress_files as $file){
                $zip->addFileFromPath($file['file_name'], $file['path']);
            }
    //        $zip->addFileFromPath('index.php', './c/index.php');
            //完成
            $zip->finish();
        } catch (Exception $e) {
            return $e->getMessage();
        }

    }
}